#include <stdlib.h>
#include <stdio.h>
#include "Element.h"
#include "TableauDynamique.h"

void initialiser(Tab_Dynamique * t)
{
	(*t).capacite=1;
	(*t).ad=(Element*)malloc(sizeof(Element));
	(*t).derniere_position=0;
}

void testament (Tab_Dynamique * t)
{
	if ((*t).ad != 0)
	{
		free((*t).ad);
		(*t).ad=0;
		(*t).capacite=0;
		(*t).derniere_position=0;
	}
}


void ajouteElement(Tab_Dynamique *t, Element e)
{
	int i;
	if( (*t).capacite == (*t).derniere_position )
	{
		Element * temp=(*t).ad;
		(*t).ad=(Element*)malloc(((*t).capacite*2)*(sizeof(Element)));
		for( i=0 ; i < t->capacite ; i++)
		{
			(*t).ad[i]=temp[i];
		}
		(*t).capacite=(*t).capacite*2;
		free(temp);
	}
	(*t).ad[(*t).derniere_position]=e;
	(*t).derniere_position++;
}


Element valeurIemeElementTabDyn(const Tab_Dynamique *t, unsigned int i)
{
	return (*t).ad[i];
}

void afficheTabDyn(const Tab_Dynamique *t)
{
	int i;
	for(i=0 ; i < (*t).derniere_position ; i++)
	{
		afficheElement((*t).ad[i]);
	}
}

void supprimeDernierElementTabDyn( Tab_Dynamique *t)
{
	t->ad[t->derniere_position-1]=0;
	t->derniere_position=t->derniere_position-1;
}

void modifieValeurIemeElementTabDyn(Tab_Dynamique *t, Element e, unsigned int i)
{
	t->ad[i]=e;
}

int rechercheElementTabDyn(const Tab_Dynamique *t, Element e)
{
	int i;
	for (i=0 ; i < t->derniere_position ; i++)
	{
		if( t->ad[i] == e )
		{
			return i;
		}
	}
	return -1;
}

